今天要來繼續介紹 NumPy 的應用,包括了 Slicing 索引,Copy, View 複製, Shape, Reshape, Concatenate 等等內容。
NumPy 中的矩陣,也可以透過像 list 一樣的方法去取出。
語法一樣也是 [start:end:step]。
如圖,取出這個矩陣的第 1 個到第 4 個元素
import numpy as np
array1 = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(array1[1:5])
# 輸出
# [2 3 4 5]
在 2-D 的矩陣也可以使用 Slicing 來取出元素,如下程式為取出第一個 row 的 1-2 個元素。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array1[1, 1:3])
# 輸出
# [6 7]
底下為取出第 0-1 個 row,並取出他們的第 1-2 個元素。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array1[0:2, 1:3])
# 輸出
# [[2 3]
#  [6 7]]
這兩個函式的差別在於,.copy() 是複製一個新的 array,所以改變 copy 後的 array 並不會改變到原本的 array,.view() 是給你看到原本的矩陣而已,所以改變的話會把原本的 array 也改變。我們看一下底下的例子會更清楚。
.copy():
底下 array1 為原本的 array,並且用 .copy() 函式來複製一個一樣的 array 給 x,這時若改變 x,並不會對原本的 array1 造成影響。
import numpy as np
array1 = np.array([1, 2, 3, 4])
x = array1.copy()
x[0] = 4
print(x)         # [4 2 3 4]
print(array1)    # [1 2 3 4]
.view():
底下 array1 為原本的 array,並且用 .view() 函式來把 array1 給 y 看見,這時若改變 y,相當於改變了 array1。
import numpy as np
array1 = np.array([1, 2, 3, 4])
y = array1.view()
y[0] = 4
print(y)         # [4 2 3 4]
print(array1)    # [4 2 3 4]
得到矩陣的 dimesions
使用 .shape 函式,可以得到現在這個 array 的 dimesions,像底下就代表這個 array 有 2 個 dimesions,並且每個 dimesions 有 4 個 element。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(array1.shape)
# 輸出
# (2, 4)
也可以透過這個函式調整 array 的維度,把它改為 4 x 2 的 array,他會直接改變原本的 array
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
array1.shape = (4, 2)
print(array1)
# 輸出
# [[1 2]
#  [3 4]
#  [5 6]
#  [7 8]]
調整 array 的維度,但不會改變原本的 array,而是創建一個副本。
import numpy as np
array1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
y = array1.reshape(4, 2)
print(array1)
# 輸出
# [[1 2 3 4]
#  [5 6 7 8]]
print(y)
# 輸出
# [[1 2]
#  [3 4]
#  [5 6]
#  [7 8]]
| 代號 | 數字 | 
|---|---|
| Inf = inf = infty = Infinity = PINF | 正無限大 +∞ | 
| NINF | 負無限大 -∞ | 
| PZERO | 正 0 | 
| NZERO | 負 0 | 
| nan = NaN = NAN | 非數值 | 
| e | 自然數 e | 
| pi | π | 
| newaxis | None 的別稱 | 
print(np.inf)
print(np.NINF)
print(np.PZERO)
print(np.NZERO)
print(np.nan)
print(np.e)
print(np.pi)
print(np.euler_gamma)
print(np.newaxis)
# 輸出
# inf
# -inf
# 0.0
# -0.0
# nan
# 2.718281828459045
# 3.141592653589793
# None
np.concatenate():如果需要把兩個 array 合併的時候,就可以使用這個函式。
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
print(np.concatenate([a, b]))
# 輸出
# [1 2 3 4 5 6 7 8]
NumPy 真的太多函式可以使用,今天就先暫時介紹到這邊了!明天再繼續。
待續...